<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		// 1.push() 添加元素到数组结尾， 返回数组的长度
		let arr = [1, 2, 3]
		let p1Res = arr.push(10)

		console.log("p1Res----", arr, p1Res)//[1, 2, 3, 10]4

		// 2.unshift() 添加元素到开头， 返回数组的长度
		let u1Res = arr.unshift("第一")
		console.log("u1Res----", arr, u1Res)//["第一",1, 2, 3, 10]5

		// 3.pop() 删除数组结尾的元素，返回删除的元素
		let arrPoP = [3, 4, 5, "最后"]
		let popRes = arrPoP.pop()
		console.log("popRes---",arrPoP,popRes)

		// 4.shift() 删除数组开头的元素，返回删除的元素
		// let sRes = arrPoP.shift()
		// console.log("sRes---",arrPoP,sRes)//[4,5] 3

		// 5.splice(开始的位置(下标), 截取的长度), 返回截取的内容
		let spArr = [1, 2, 3, 4, 5]
		//'' let spRes = spArr.splice(1,2)//[1, 5, 6][2,3]
		// 一个参数的时候表示， 从这俄国下标一直删除到最后
		// let spRes = spArr.splice[1]//[1] [2,3,4,5]
		// 第一个参数是负的， 表示倒着数， -1表示倒数第一个
		// let spRes = spArr.splice(-3,3)
		// console.log("spRes---", spArr, spRes)//[1,2] [3,4,5]

		// 6.splice(开始的位置(下标)，截取的长度，添加元素)，返回截取的内容并替换
		let spRes2 = spArr.splice(0, 1, "a", "b","c")
		console.log("spRes2---", spArr, spRes2)//['a', 'b', 'c',2,3,4,5] [1]

		// 7.concat() 合并数组 返回新数组
		var conArr = [1,2,3]
		let conArr2 = [1,2,3]

		let conRes = conArr.concat(conArr2)//[1,2,3,1,2,3]

		console.log("conRes----",conArr, conArr2, conRes)

		// 8.sort() 排序
		/*
			排序原理：
				1.先利用toString()转成字符串，让字符串按照unicode表进行比较，根据大小排序
				怎么看unicode值-------使用charCodeAt()
		*/
		let sortArr = [2,3,1]
		console.log("sortArr--- ", sortArr.sort())//[1, 2, 3]
		let sortArr2 = [3, 20, 2]
		console.log("sortArr2----", sortArr2.sort())//[2, 20, 3]
		let sortArr3 = ["cat", "dog", "pig"]
		console.log("sortArr3---", sortArr3.sort())//['cat','dog','pig']
		console.log("cat".charCodeAt())
		console.log("dog".charCodeAt())
		console.log("pig".charCodeAt())

		// 自定义排序规则 用法 数组.sort(自定义方法名)
		// 升序排列 从小到大
		function compareAsc(a,b){
			if (a < b) {
				return -1;// 表示a放在b前面
			}else if (a === b) {
				return 0;
			}else{
				return 1; //表示a放在b后面
			}
		}
		console.log("升序---------", sortArr2.sort(compareAsc))
		// 降序 从大到小 30 20 10
		function compareDesc(a,b){
			if (a < b){
				return 1; //表示a放b后面
			}else if (a == b) {
				return 0;
			}else{
				return -1; //表示a放在b前面
			}
		}
		console.log("降序-------",sortArr2.sort(compareDesc))//[20,3,2]
		
		// 9.reverse() 将数组中的元素反转
		let revArr = ['a', 1, 2, "b" ]
		console.log("revArr----", revArr.reverse())//['b', 2, 1, "a" ]

		// 10.数组转为字符串 toString string
		console.log("转字符串",String(revArr), revArr.toString())//b, 2, 1, a

		// 11.join() 拼接字符串
		console.log("join---------", revArr.join("-"))//b-2-1-a
		console.log("join---------", revArr.join("*"))//b*2*1*a
		console.log("join---------", revArr.join(""))//b21a

		// 12.indexOf() 返回某个字母出现的位置
		let str ="12313232sadadasdas"
		let arr4 = [1,2,5,4]
		console.log("index-----",str.indexOf("ad"))//5
		console.log("index-----",arr4.indexOf(4))//1
		console.log("index-----",arr4.indexOf(99))//1


		// 13.charAt() 返回指定位置的字符
		console.log('charAt-----',str.charAt(5))//j

		// 14.split() 字符串拆分成数组
		let str2 = "还有-三周过-五一"
		console.log(str2.split("-"))

		let url ="https://www.baidu.com?userName=张三&passWord=123456&like=孙悟空"
		// 张三 123456 孙悟空
		let urlRes = url.split("?")[1].split("&")
		console.log(urlRes)

		for(let i = 0; i < urlRes.length; i++){
			console.log(urlRes[i].split("=")[1])
		}
		//splice split slice
		// 15.splice(start, end) 截取数组的元素 左闭右开[ , )
		let arr3 = ["h","e","1","1","o"]
		console.log(arr5.slice(1,3))//['e','1']
		console.log(arr5.slice(1))//['e','1','1','0']一个参数截取到最后

		// 16.如何判断数组
		// Array.isArray()
		console.log(Array.isArray(arr5))//true
		// 变量 instanceof 数据类型
		console.log(arr5 instanceof String)//false
		


	</script>
</body>
</html>